【JAVA】探讨 Java 中 valueOf 和 parseInt 的区别 您所在的位置:网站首页 integer valueof和parseint 【JAVA】探讨 Java 中 valueOf 和 parseInt 的区别

【JAVA】探讨 Java 中 valueOf 和 parseInt 的区别

2023-11-02 02:57| 来源: 网络整理| 查看: 265

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

在编程中,遇到类型转换,好像会经常用到 parseInt 和 valueOf,当然这里只拿 Integer 类型进行陈述,其他类型也是雷同的;

想必有读者也跟我一样,经常交叉使用这两个方法,但却不知道这两者到底有什么区别,接下来就来探究一番;  

区别 Integer.parseInt(s) 的作用就是把字符串 s 解析成有符号基本类型的 int; Integer.valueOf(s) 把字符串 s 解析成 Integer 对象类型,返回的对象可以调用 Integer 中的方法;

接下来,通过源码进行逐一解析;  

parseInt

我们首先点进 parseInt() 方法中,

public static int parseInt(String s) throws NumberFormatException { return parseInt(s, 10); }

可以看到,这个被我们调用的 parseInt() 方法返回了一个重载方法:

public static int parseInt(String s, int radix) throws NumberFormatException { if (s == null) { throw new NumberFormatException("null"); } else if (radix < 2) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } else if (radix > 36) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } else { boolean negative = false; int i = 0; int len = s.length(); int limit = -2147483647; if (len 36) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } else {

3、接着往下,再一次对长度进行一个校验,

int len = s.length(); if (len = -128 && i archivedCache.length) { Integer[] c = new Integer[size]; int j = -128; for(int k = 0; k < c.length; ++k) { c[k] = new Integer(j++); } archivedCache = c; } cache = archivedCache; assert high >= 127; } }

整体就是初始化一个 IntegerCache.cache 数组,数组里面存储-128到127之间的数字当做是缓存,源码一开始是分析数组长度,然后给数组赋值;

总的来说,三个重构的 valueOf() 方法还是大同小异的:

Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例; Integer valueOf(String s):返回保存指定的 String 的值的 Integer 对象; Integer valueOf(String s, int radix):返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值;

 

后记

看源码还是能学到很多东西的,源码自有黄金屋,多看多学,夯实基础,之后会轻松高效很多!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有